Skip to content

Support Python 3.14 (and drop Python 3.9 and 3.10)#142

Merged
eriknw merged 8 commits intoGraphBLAS:mainfrom
eriknw:python-3.14
Mar 27, 2026
Merged

Support Python 3.14 (and drop Python 3.9 and 3.10)#142
eriknw merged 8 commits intoGraphBLAS:mainfrom
eriknw:python-3.14

Conversation

@eriknw
Copy link
Copy Markdown
Member

@eriknw eriknw commented Oct 14, 2025

Also add support for free-threading Python (as beta)

@alugowski
Copy link
Copy Markdown
Collaborator

alugowski commented Oct 15, 2025

For Python 3.13 and 3.14 we need the newer cibuildwheel.

I briefly looked at the errors and saw two:

  • The two failing linux jobs appeared to be because the SuiteSparse lib went to a lib64 directory instead of lib, and the repair tool couldn't find it. The fix is likely either specifying the lib dir explicitly or somehow telling auditwheel to check in more places. We'd have to dig in on that.
  • The two failing linux jobs appear to have the same cause: the SuiteSparse lib isn't being correctly bundled into the wheel by auditwheel (the Repair step). Must be something to do with library paths. It looks like this was introduced in cibuildwheel 2.23 (see Bump pypa/cibuildwheel from 2.22 to 2.23 #138, my guess is caused by https://github.com/pypa/cibuildwheel/releases/tag/v2.23.2 which updated manylinux)
  • The Windows 3.14t build appears to link against the wrong Python lib, python314.lib where I'm guessing it should link against python314t.lib. That sounds like not our bug and we'd have to wait for an upstream fix. We can simply skip py314t on windows.

eriknw added 3 commits March 27, 2026 13:18
- Update SuiteSparse:GraphBLAS from 10.1.1 to 10.3.1
  - Regenerate headers (GPU_ID -> GPU_IDS, add NGPUS, PRINT_FUNCTION)
- Drop Python 3.10 support (minimum now 3.11)
- PEP 639: license = "Apache-2.0" with license-files
- Bump setuptools >= 77, numpy >= 1.24
- Update CI: cibuildwheel v2 -> v3.4, checkout v6, QEMU v4, create-pull-request v8
  - Enable PyPy and free-threading explicitly (CIBW_ENABLE)
  - Fix manylinux_2_28 package manager (dnf instead of yum)
- Update pre-commit hooks (black 26.3.1, isort 8.0.1, pyupgrade 3.21.2, etc.)
  - Add shellcheck, pygrep-hooks; enable check-executables-have-shebangs
- Fix shellcheck warnings in docker_build.sh and suitesparse.sh
- Replace QEMU-emulated aarch64 with native ubuntu-24.04-arm runner
- Replace deprecated macos-13 with macos-15-intel
- Remove QEMU setup and SUITESPARSE_FAST_BUILD (no longer needed)
@eriknw eriknw changed the title Support Python 3.14 (and drop Python 3.9) Support Python 3.14 (and drop Python 3.9 and 3.10) Mar 27, 2026
@eriknw
Copy link
Copy Markdown
Member Author

eriknw commented Mar 27, 2026

All green! I'm going to merge and do a release 🤞

@eriknw eriknw merged commit 292dc06 into GraphBLAS:main Mar 27, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants